﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Text;
using AG.Modulos.AdministracionDominio.Contratos;

namespace AG.Modulos.AdministracionDominio.Presentadores
{
    public class PresentadorGestionarValoresDominio
    {

       #region Atributos

        private IGestionarValoresDominio _vista;
        private ControladorAdministracionDominio _controlador;

        #endregion

       #region Constructores

        /// <summary>
        /// Es el constructor principal del presentador
        /// </summary>
        /// <param name="vista">es el contrato que tiene la vista con el presentador</param>
        public PresentadorGestionarValoresDominio(IGestionarValoresDominio vista)
        {
                _vista = vista;
                _controlador = new ControladorAdministracionDominio();
            
        }

        #endregion

        #region Metodos Publicos


        /// <summary>
        /// Metodo que llena el dropDownList de con los tipos de dominio
        /// </summary>
        public void llenarTiposDeDominio()
        {

            _vista.SessionListaDeDominios = _controlador.ConsultarTodosValoresDeDominio();
            _vista.TiposDeDominioDDL.DataSource = _controlador.FiltrarRepetidos(_vista.SessionListaDeDominios);
            _vista.TiposDeDominioDDL.DataTextField = ConfigurationManager.AppSettings[@"DDLTipoDeDominioText"];
            _vista.TiposDeDominioDDL.DataBind();
        }

        /// <summary>
        /// Metodo que Carga el GridView dado el dominio seleccionado
        /// </summary>
        public void FiltrarListaDeDominios()
        {
            if (_vista.TiposDeDominioDDL.SelectedItem.ToString() != ConfigurationManager.AppSettings[@"EtiquetaSeleccionar"])
            {
                _vista.ListaDominios.DataSource = FildatdoDeListaDominio();
                _vista.HabilitarCampos = true;
                
            }
            else
                _vista.HabilitarCampos = false;
            
            _vista.ListaDominios.DataBind();

        }

        /// <summary>
        /// Metodo que agrega un valor de dominio
        /// </summary>
        public void AgregarValorDominio()
        {
            string descripcion = _vista.DescripcionDominio;
            int valor = int.Parse(_vista.ValorDominio);
            bool retorno = _controlador.AgregarDominio(_vista.TiposDeDominioDDL.SelectedItem.ToString(),
                                                          descripcion,valor);

            if (retorno)
            {
                _vista.SessionListaDeDominios = _controlador.ConsultarTodosValoresDeDominio();
                FiltrarListaDeDominios();
            }
        }

        public void EliminarValorDominio(int id)
        {
            
            bool retorno = _controlador.EliminarDominio(id);

            if (retorno)
            {
                _vista.SessionListaDeDominios = _controlador.ConsultarTodosValoresDeDominio();
                FiltrarListaDeDominios();
            }
        }

        public DataSet FildatdoDeListaDominio()
        {
            return _controlador.FiltrarDataSet(_vista.SessionListaDeDominios,
                                               _vista.TiposDeDominioDDL.SelectedValue,
                                               ConfigurationManager.AppSettings[ @"DDLTipoDeDominioText"]);
        }

        #endregion


        #region Metodos Privados


        #endregion

    }
}
